## 11.3. Server Status

For this exercise, the httpd.conf in ... /site.status file should look like this:

>     User webuser
>     Group webgroup
>     ServerName www.butterthlies.com
>     DocumentRoot /usr/www/site.status/htdocs

>     <Location /status>
>     order deny, allow
>     allow from 192.168.123.1
>     deny from all
>     SetHandler server-status
>     </Location>

>     <Location /info>
>     order deny, allow
>     allow from 192.168.123.1
>     deny from all
>     SetHandler server-status
>     SetHandler server-info
>     </Location>

The `allow` `from` directive keeps our laundry private.

Remember the way `order` works: the last entry has the last word. Notice also the use of `SetHandler` , which sets a handler for all requests to a directory, instead of `AddHandler`,`` which specifies a handler for particular file extensions. If you then access www.butterthlies.com/status, you get this response:

>     Apache Server Status for www.butterthlies.com
>     Server Version: Apache/1.3.1 (Unix)
>     Server Built: Sep 15 1998 15:09:34
>     Current Time: Tuesday, 13-Oct-1998 08:16:08
>     Restart Time: Tuesday, 13-Oct-1998 08:15:13
>     Server uptime: 55 seconds
>     Total accesses: 1 - Total Traffic: 0 kB
>     CPU Usage: u0 s0 cu0 cs0
>     .0182 requests/sec - 0 B/second - 0 B/request
>     1 requests currently being processed, 5 idle servers
>     _W____..........................................................
>     ................................................................
>     ................................................................
>     ................................................................
>     Scoreboard Key:
>     "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
>     "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
>     "L" Logging, "G" Gracefully finishing, "." Open slot with no current process

>     Srv PID  Acc   M  CPU   SS Req Conn  Child Slot     Host             Vhost                 Request
>     0   157 0/1/1  -  0.00  10  54  0.0  0.000 0.000 192.168.123.1 www.butterthlies.com   GET /mycgi.cgi HTTP/1.0
>     1   158 0/0/0  W  0.00  54   0  0.0  0.00  0.00  192.168.123.1 www.butterthlies.com   GET /status HTTP/1.0

>     Srv   Server number
>     PID   OS process ID
>     Acc   Number of accesses this connection / this child / this slot
>     M     Mode of operation
>     CPU   CPU usage, number of seconds
>     SS    Seconds since beginning of most recent request
>     Req   Milliseconds required to process most recent request
>     Conn  Kilobytes transferred this connection
>     Child Megabytes transferred this child
>     Slot  Total megabytes transferred this slot

There are several useful variants on the basic status request:

`status?notable`

  Returns the status without using tables, for browsers with no table support

`status?refresh`

  Updates the page once a second

`status?refresh=6`

  Updates the page every six seconds

`status?auto`

  Returns the status in a format suitable for processing by a program

These can also be combined by putting a comma between them, for example: http://www.butterthlies.com/status?notable,refresh=10.

Copyright © 2001 O'Reilly & Associates. All rights reserved.